// ActionScript file
			
			
			import com.sodimac.util.commons.UploadPostHelper;
			import com.sodimac.util.commons.DataGridExport;
			import com.sodimac.v2s.view.components.ScreenFormat;
			import mx.events.DataGridEventReason;
			import com.sodimac.v2s.model.ComprasModelLocator;
			import mx.binding.utils.ChangeWatcher;
			import com.sodimac.v2s.events.grabarProformaInvoicePorPaisEvent;
			import com.sodimac.util.commons.RolesUsuarios;
			import com.sodimac.util.commons.UtilString;
			import com.sodimac.util.alerts.alert;
			import com.sodimac.util.commons.EstadosBPM;
			import com.sodimac.util.commons.Resources;
			import com.sodimac.util.controls.adgFooter.FooterAdvancedDataGridColumn;
			import com.sodimac.v2s.vo.InfoSfpVO;
			import mx.events.CollectionEvent;
		    import mx.events.AdvancedDataGridEvent;
		    import mx.events.ItemClickEvent;
			import mx.rpc.events.FaultEvent;
			import mx.rpc.events.ResultEvent;
			import mx.controls.Alert;
			import mx.controls.DateField;
	        import mx.controls.NumericStepper;
			import mx.controls.LinkButton;
			import mx.controls.AdvancedDataGrid;	        
		    import mx.controls.ButtonLabelPlacement;
			import mx.controls.dataGridClasses.DataGridColumn;
			
			import mx.collections.ItemResponder;
			import mx.collections.ArrayCollection;
			import mx.collections.errors.ItemPendingError;
			import flash.utils.ByteArray;
			
		    
			/* datos de pantalla */    
			[Bindable] private var numericStepperFac:ClassFactory;
				  
			[Bindable] public var resumenArr:Array;
			[Bindable] public var paisesArr:Array;
			[Bindable] public var paisesNacArr:Array;
			[Bindable] public var prodCorpData:ArrayCollection;	
			[Bindable] public var prodNacData:ArrayCollection;
			[Bindable] public var paisesDocArr:Array;
			[Bindable] public var infoSfpVo:InfoSfpVO;
			[Bindable] public var paisesNombres:XMLList;						
			    			
			[Bindable] public var codPais: String;
			[Bindable] public var usuarioRol: Number;
			[Bindable] public var usuarioId: String;
			[Bindable] public var pedidoCorpId: Number;
			[Bindable] public var empresaId: String;
			[Bindable] public var uploadURL: String;
			[Bindable] public var downloadURL: String;
			[Bindable] public var reporteURL: String;
			[Bindable] public var uploadDataURL: String;			
			
			[Bindable] public var prodNacCLData:ArrayCollection = new ArrayCollection();
			[Bindable] public var prodNacCOData:ArrayCollection = new ArrayCollection();
			[Bindable] public var prodNacPEData:ArrayCollection = new ArrayCollection();
			[Bindable] public var prodNacARData:ArrayCollection = new ArrayCollection();
			
			[Bindable] private var modelo: ComprasModelLocator = ComprasModelLocator.getInstance();
			
			public var prodCorpUpdated:ArrayCollection = new ArrayCollection();
			public var prodNacUpdated:ArrayCollection = new ArrayCollection();
			public var paisesPartArray:Array = new Array("CL","CO","PE","AR");   //orden de los paises que pueden participar de una SFPC
			public var paisesCorreccionArray:Array = new Array();                //contiene los paises a modificar
			public var paisesConfimarArray:Array = new Array();
				        	    
			public var cwDataGrid:ChangeWatcher; 
			public var cwDataGrid2:ChangeWatcher;
			public var cwPaisesUpload:ChangeWatcher;  //consulta archivos subidos
			
			
			private var file:FileReference;
      		private var tempPaisId:String;
      		private var hidePaisesCorp:Array = new Array();
      		
			
			private function onInit():void
			{
				trace("____"+  this.name + " -->  onInit.");
				
				 initUpload();
				 
				//Empezamos a escuchar cambios en la propiedad source de 
				cwDataGrid  = ChangeWatcher.watch(ComprasModelLocator.getInstance(),'prodConjHomData',onProductosChange); 
				cwDataGrid2 = ChangeWatcher.watch(ComprasModelLocator.getInstance(),'paisesDocData',onProductosChangeDoc);
				
			}

			private function onCreationComplete():void
			{
			
			    //show vbox documents
			    trace("__ verificando usuario...");
			    if (usuarioRol == RolesUsuarios.PROVEEDOR)
			    {
			    	vbox_vendor.visible = true;
			    	vbox_cinter.height = 0;
			    } else 
			    {
			    	vbox_cinter.visible = true;
			    	vbox_vendor.height = 0;
			    }			
				
			}



  			private function onProductosChange(e:Event):void
			{
			    trace("____"+  this.name + " -->  onProductosChange.");
				 
				var col:AdvancedDataGridColumn;
		        var cols:Array = dg_corp.columns;				 
				//ocultar pais
				if ((paisesArr)  && (paisesArr.length>0) )
				{
					//obtener pais
					hidePaisesCorp = paisesPartArray;
					for (var j:int=0;j<paisesArr.length;j++) 
					{
						var cod:String;
						cod = paisesArr[j];
						for (var k:int=0;k<paisesPartArray.length;k++)
						{
							if (paisesPartArray[k] == cod)
								hidePaisesCorp.splice(k,1);
						}
					} 
					trace("-------------------------");
					trace(hidePaisesCorp);
					
					for (j=0;j<hidePaisesCorp.length;j++) 
					{
						var name:String = UtilString.toLowerCase(hidePaisesCorp[j]);
	 					for (k=0;k<cols.length;k++)  
						{
							 if (String(cols[k].dataField).indexOf(name +"_") != -1)
							 {
							 	 var column:FooterAdvancedDataGridColumn = dg_corp.columns[k];
							 	 column.visible = false;
							 }  
						} 
					}
				} 
					
				//hide opciones adjuntar/seleccionar
				if (hidePaisesCorp)
				{
						trace("ocultando paises");
			    	if (usuarioRol == RolesUsuarios.PROVEEDOR)
			    	{						
						for (var r:int=0;r<hidePaisesCorp.length;r++)
						{
				    		var prefijo:String = hidePaisesCorp[r];
				    		if (prefijo == "CL"){
				    			gridVendorCL.height = 0;
				    			gridVendorCL.visible = false;
				    		} else if (prefijo == "CO"){
				    			gridVendorCO.height = 0;
				    			gridVendorCO.visible = false;
				    		} else if (prefijo == "PE"){
				    			gridVendorPE.height = 0;
				    			gridVendorPE.visible = false;
				    		}else if (prefijo == "AR"){
				    			gridVendorAR.height = 0;
				    			gridVendorAR.visible = false;
				    		} 						
						}
			    	} else {
			    	
						for (var s:int=0;s<hidePaisesCorp.length;s++)
						{
				    		var pre:String = hidePaisesCorp[s];
				    		if (pre == "CL"){
				    			gridCL.height = 0;
				    			gridCL.visible = false;
				    		} else if (pre == "CO"){
				    			gridCO.height = 0;
				    			gridCO.visible = false;
				    		} else if (pre == "PE"){
				    			gridPE.height = 0;
				    			gridPE.visible = false;
				    		}else if (pre == "AR"){
				    			gridAR.height = 0;
				    			gridAR.visible = false;
				    		} 						
						}			    	
			    	
			    	}
				}								 

				cargaProductosNac();
		  		
		  		
		  		//dejamos de escuchar cambios
		  		cwDataGrid.unwatch();		    
			    
			} 			
			
			
			
  			private function cargaProductosNac():void
			{				
			
			//asign array for countries and visibility
			    if ((prodNacData)  && (paisesNacArr.length >0))
			    {
			    	trace("asignando arreglos por pais....");
			    
			    	for (var p:int=0;p<paisesNacArr.length;p++) 
			    	{
			    		var prefix:String = paisesNacArr[p];
			    		if (prefix == "CL")
			    		{
			    			prodNacCLData = prodNacData[p];
			    		} else if (prefix == "CO")
			    		{
			    			prodNacCOData = prodNacData[p];
			    		} else if (prefix == "PE")
			    		{
			    			prodNacPEData = prodNacData[p];
			    		}else if (prefix == "AR")
			    		{
			    			prodNacARData = prodNacData[p];
			    		} 
			    	} 
			    	
			    }	
			    
			   	
				// hide countries compra individual
				if ((paisesNacArr)  && (paisesNacArr.length>0) )
				{
					
					//obtener pais
					var hidePaisesNac:Array = new Array();
					hidePaisesNac = paisesPartArray;
					for (var x:int=0;x<paisesNacArr.length;x++) 
					{
						var cod:String;
						cod = paisesNacArr[x];
						for (var k:int=0;k<paisesPartArray.length;k++)
						{
							if (paisesPartArray[k] == cod)
								hidePaisesNac.splice(k,1);
						}
					}
					trace("hide nac " +  hidePaisesNac);
					
							
					for (k=0;k<hidePaisesNac.length;k++) 
					{
			    		var prefijo:String = hidePaisesNac[k];
			    		if (prefijo == "CL")
			    		{
			    			vboxCL.visible=false;
			    			vboxCL.height=5;
			    		} else if (prefijo == "CO")
			    		{
			    			vboxCO.visible=false;
			    			vboxCO.height=5;
			    		} else if (prefijo == "PE")
			    		{
			    			vboxPE.visible=false;
			    			vboxPE.height=5;
			    		} else if (prefijo == "AR")
			    		{
			    			vboxAR.visible=false;
			    			vboxAR.height=5;
			    		}
			    									
					}
					
				} else {
				// considera el caso en que no existan pedidos paises, 
				// por lo que oculta según compra corporativa
				
					for (k=0;k<hidePaisesCorp.length;k++) 
					{
			    		var prefi:String = hidePaisesCorp[k];
			    		if (prefi == "CL")
			    		{
			    			vboxCL.visible=false;
			    			vboxCL.height=5;
			    		} else if (prefi == "CO")
			    		{
			    			vboxCO.visible=false;
			    			vboxCO.height=5;
			    		} else if (prefi == "PE")
			    		{
			    			vboxPE.visible=false;
			    			vboxPE.height=5;
			    		} else if (prefi == "AR")
			    		{
			    			vboxAR.visible=false;
			    			vboxAR.height=5;
			    		}
			    									
					}				
				
				
				}
					
			}				
				


 


  			private function onProductosChangeDoc(e:Event):void
			{
			    trace("____"+  this.name + " -->  onProductosChangeDoc.");
			    

			    
				//unhide upload documents
				if (paisesDocArr)
				{
					trace("paises con doc: " + paisesDocArr);
		
				    if (usuarioRol == RolesUsuarios.PROVEEDOR)
				    {
						for (var j:int=0;j<paisesDocArr.length;j++)
						{
				    		var prefijo:String = paisesDocArr[j];
				    		if (prefijo == "CL"){
				    			lnkDownloadVendorCL.visible = true;
				    		} else if (prefijo == "CO"){
				    			lnkDownloadVendorCO.visible = true;
				    		} else if (prefijo == "PE"){
				    			lnkDownloadVendorPE.visible = true;
				    		}else if (prefijo == "AR"){
				    			lnkDownloadVendorAR.visible = true;
				    		} 						
							
						}
				    } 
				    else
				    {
						for (var m:int=0;m<paisesDocArr.length;m++)
						{
				    		var pref:String = paisesDocArr[m];
				    		if (pref == "CL"){
				    			lnkDownloadCL.visible = true;
				    		} else if (pref == "CO"){
				    			lnkDownloadCO.visible = true;
				    		} else if (pref == "PE"){
				    			lnkDownloadPE.visible = true;
				    		}else if (pref == "AR"){
				    			lnkDownloadAR.visible = true;
				    		} 						
							
						}
				    }			
		
				 }	
				 

		  		//dejamos de escuchar cambios
		  		cwDataGrid2.unwatch();		    
			    
			} 


			

			
				

			
			

/* 			private function modificaTotalesConj(event:AdvancedDataGridEvent):void
			{
				 trace(" ____"+  this.name + " -->  modificaTotalesConj.");
				
				var cantidad:Number = NumericStepper(event.currentTarget.itemEditorInstance).value;
				var prefix:String   = dg_corp.columns[event.columnIndex].dataField;
				var subPrice:Number = 0;
				var subKgs:Number   = 0;
				var subCbm:Number   = 0;
				var total:Number    = 0;				
				
				prefix = prefix.substr(0,3);
				trace("prefijo : " + prefix); 
				subPrice = Number(prodCorpData[event.rowIndex]["unit_price"]);
				subKgs   = Number(prodCorpData[event.rowIndex]["unit_kgs"]);
				subCbm   = Number(prodCorpData[event.rowIndex]["unit_cbm"]);
				 
				//update subs
		 			prodCorpData[event.rowIndex][prefix + "sub_price"] = (cantidad==0)? "0": Number(cantidad * subPrice).toFixed(2);
					prodCorpData[event.rowIndex][prefix + "sub_kgs"]   = (cantidad==0)? "0": Number(cantidad * subKgs).toFixed(2);
					prodCorpData[event.rowIndex][prefix + "sub_cbm"]   = (cantidad==0)? "0": Number(cantidad * subCbm).toFixed(2);
				
				//sum all countries
				for (var j:int=0;j<paisesArr.length;j++) 
				{
					prefix = UtilString.toLowerCase(paisesArr[j]);
					if (!isNaN(prodCorpData[event.rowIndex][prefix + "_quantity"]))
					{
						total +=  Number(prodCorpData[event.rowIndex][prefix + "_quantity"]);
					}
				}
					prodCorpData[event.rowIndex]["sub_quantity"] = (Number(total*100)/100);
					prodCorpData[event.rowIndex]["sub_total"] = (Number(total*subPrice*100)/100);
				 
			} */
		
		
		/*
			private function validaCantidad(event:AdvancedDataGridEvent):void
			{
				var newValor:Number = NumericStepper(event.currentTarget.itemEditorInstance).value;
				var oldValor:Number = event.currentTarget.editedItemRenderer.data[event.dataField];
				var caseName:String ="";
				var casePack:Number = 0;
				var row:Number = 0; 
				var prefix:String;
				var qty:Number = 0;
				var prefijo_pais:String = "";
				var subQty:Number = 0;
				var newQty:Number = 0;
				var resto:Number = 0;
				var sumVendor:Number = 0;
				var unitPrice:Number = 0;
				var proposed:Boolean= false;
				
                if ( (newValor == oldValor)  || (event.reason == DataGridEventReason.CANCELLED)) {
                    return; 
                }
                
				if (oldValor != -1)
				{

					subQty =  oldValor;
					
					//distribuir diferencia
					trace("editando Sub Quantity ...");
					if ( (paisesArr) && (paisesArr.length) && (subQty > 0) ) {
	
							//calculo mayor  y menor
							for (var k:int=0; k < paisesArr.length;k++)
							{
								qty = 0;
								casePack = 0;
								resto = 0;
								newQty = 0;
								
								prefijo_pais = UtilString.toLowerCase(paisesArr[k]) + "_";
								casePack = Number(prodCorpData[event.rowIndex][prefijo_pais + "case_pack"]);
								qty =  Number(prodCorpData[event.rowIndex][prefijo_pais + "quantity"]);
							
								if ( (qty) && paisesArr[k] == "CL"){
									
									newQty = Math.round( (newValor* ((qty*100/subQty)/100)) );
									resto = newQty%casePack;
									if ( resto != 0)
									{
										proposed= true;
										newQty = Math.ceil(newQty/casePack)*casePack;
									}
									sumVendor += (newQty);
									prodCorpData[event.rowIndex]["cl_quantity"] = (newQty);
								
					    		} else if ( (qty) && paisesArr[k]  == "CO"){
		
									newQty =  Math.round( (newValor* ((qty*100/subQty)/100)) );
									resto = newQty%casePack;
									if ( resto != 0)
									{
										proposed= true;
										newQty = Math.ceil(newQty/casePack)*casePack;
									}
									sumVendor += (newQty);
									prodCorpData[event.rowIndex]["co_quantity"] = ( newQty);			    			
					    			
					    		} else if ((qty) && paisesArr[k]  == "PE"){
									newQty =  Math.round( (newValor* ((qty*100/subQty)/100)) );
									resto = newQty%casePack;
									if ( resto != 0)
									{
										proposed= true;
										newQty = Math.ceil(newQty/casePack)*casePack;
									}
									sumVendor += (newQty);
									prodCorpData[event.rowIndex]["pe_quantity"] = (newQty);			    			
					    			
					    		} else if ((qty) && paisesArr[k]  == "AR"){
									newQty =  Math.round( (newValor* ((qty*100/subQty)/100)) );
									resto = newQty%casePack;
									if ( resto != 0)
									{
										proposed= true;
										newQty = Math.ceil(newQty/casePack)*casePack;
									}
									sumVendor += (newQty);
									prodCorpData[event.rowIndex]["ar_quantity"] = ( newQty);		    			
					    			
					    		}
					    		
							}
						
							
						
						//update col sub_total = qty * unit_price
						unitPrice = Number(prodCorpData[event.rowIndex]["unit_price"]);
						prodCorpData[event.rowIndex]["sub_total"]  = Number(sumVendor * unitPrice);
						
						NumericStepper(event.currentTarget.itemEditorInstance).value = sumVendor;
						event.currentTarget.editedItemRenderer.data[event.dataField] = -1;
						if (proposed)
						{
							alert.info("Se propone una cantidad superior a la ingresada, la cual ha sido distribuída entre los países participantes.");
						} else {
							alert.info("La cantidad ingresada ha sido distribuída entre los países participantes.");
						}
													
	
					} else if (subQty  == 0)
					{
						sumVendor = newValor;
						prodCorpData[event.rowIndex][ UtilString.toLowerCase(paisesArr[0]) + "_quantity"]  = newValor;					
						
						//update col sub_total = qty * unit_price
						unitPrice = Number(prodCorpData[event.rowIndex]["unit_price"]);
						prodCorpData[event.rowIndex]["sub_total"]  = Number(sumVendor * unitPrice);
						
						event.currentTarget.editedItemRenderer.data[event.dataField] = -1;						
					
					}
				}
			}					
					
	
		*/

	        
			
	        private function onCreationCompleteDGCorp():void 
	        {
				var col:AdvancedDataGridColumn;
		        var cols:Array = dg_corp.columns;
				
				numericStepperFac = new ClassFactory(NumericStepper);
		        numericStepperFac.properties = {minimum:0, maximum:999999999, maxChars:9};
		        
				trace("____"+  this.name + " -->  onCreationCompleteDGCorp.");	

		        var i:int =0;    
		        while (i < cols.length)
		        {
		            	//para todas las columnas
		            	col= cols[i];
//		            	col.editable = false;
		            	col.headerWordWrap = true;

//comentado por RGA el 18.12.2009 según mail con definición de FGalaz
//		            	if  ( usuarioRol == RolesUsuarios.PROVEEDOR)
//		            	{
//							            	
//			            	//renderiza NumericStepper
//			            	if  (i==8)  
//			            	{
//				            	col.editable = true;
//				            	col.editorDataField = "value";
//				            	col.itemEditor = numericStepperFac;
//			            	}
//			            }	
			            	
						//format
						if ( (i==6) ||(i==9) || ((i>=15) && (i<=17)) || ((i>=23) && (i<=25)) || ((i>=31) && (i<=33)) || ((i>=39) && (i<=41)) ) 
						{
							var sf:ClassFactory = new ClassFactory(ScreenFormat);
							sf.properties = {fieldName:  col.dataField}
							col.itemRenderer = sf; 
						}
		            	i++;
		        }
		        
	         }
	         
	         
/*
 			private function modificaTotalesNac(event:AdvancedDataGridEvent, paisArr:ArrayCollection):void
			{
				var cantidad:Number =  paisArr.getItemAt(event.rowIndex).vendorQuantity;
				var subPrice:Number = 0;
				var subKgs:Number   = 0;
				var subCbm:Number   = 0;
				var total:Number    = 0;
				
				subPrice = Number(paisArr[event.rowIndex]["vendorPrice"]);
				subKgs   = Number(paisArr[event.rowIndex]["unitKgs"]);
				subCbm   = Number(paisArr[event.rowIndex]["unitCbm"]);

				// Get the name of the column being editted.
				paisArr.getItemAt(event.rowIndex).subPriceVendor = (cantidad==0)? "0":Number(cantidad * subPrice).toFixed(2);
				paisArr.getItemAt(event.rowIndex).subKgsVendor = (cantidad==0)? "0": Number(cantidad * subKgs).toFixed(2);
				paisArr.getItemAt(event.rowIndex).subCbmVendor = (cantidad==0)? "0": Number(cantidad * subCbm).toFixed(2);
				
			}  
	         

			private function validaCantidadNac(event:AdvancedDataGridEvent, dataArr:ArrayCollection, pais:String):void
			{
				var newValor:Number = NumericStepper(event.currentTarget.itemEditorInstance).value;
				var oldValor:Number = event.currentTarget.editedItemRenderer.data[event.dataField];
				var casePack:Number = dataArr.getItemAt(event.rowIndex).casePack; 
				var resto:Number    = 0;
				
				
				if (oldValor != -1)
				{
					if ( isNaN(casePack) || (casePack ==0)) 
					{
						AdvancedDataGrid(event.currentTarget).destroyItemEditor();
						event.preventDefault();
						alert.error("Case Pack no válido, no es posible validar cantidad  ingresada.");
					} 
					else 
					{
						var max:Number = NumericStepper(event.currentTarget.itemEditorInstance).maximum;
						if (newValor == max)
						{
							AdvancedDataGrid(event.currentTarget).destroyItemEditor();
							event.preventDefault();	
							alert.warning("Valor ingresado es igual o superior al máximo permitido ("+ pesosFmt.format(max) +").");
						}
						else
						{					
							resto=newValor%casePack;
							if (resto !=0)
							{
								NumericStepper(event.currentTarget.itemEditorInstance).value = 	Math.ceil(newValor/casePack)*casePack;
								event.currentTarget.editedItemRenderer.data[event.dataField] = -1;		
								alert.warning("La cantidad ingresada debe ser múltiplo del case pack ("+ casePack + ").  Se propone una cantidad superior válida.");
							} 
		
						}	
					}
				}	

			}

*/
 				private function onCreationCompleteDGNac(adg:AdvancedDataGrid):void {
					var i:int = 0;
					var col:AdvancedDataGridColumn;
					var cols:Array = adg.columns;
					
					trace("____"+  this.name + " -->  onCreationCompleteDGNac");
					numericStepperFac = new ClassFactory(NumericStepper);
					numericStepperFac.properties = {minimum:0, maximum:999999999, maxChars:9};
					
					while (i < cols.length)
					{
						//para todos
						col= cols[i];
					    col.headerWordWrap = true;
						//col.editable = false;
						
//comentado por RGA el 18.12.2009 según mail con definición de FGalaz
//						//renderiza NumericStepper
//						if (i==8)
//						{
//							col.editable = true;
//							col.editorDataField = "value";
//							col.itemEditor = numericStepperFac;
//						}


						//format
						if ( (i==5) || (i>9) ) 
						{
							var sf:ClassFactory = new ClassFactory(ScreenFormat);
							sf.properties = {fieldName:  col.dataField}
							col.itemRenderer = sf; 
						}
						i++;
					}

				} 

	         
	        public function textFunction(col:AdvancedDataGridColumn):String
			{
				var txt:String = ""; 
				if ((col.headerText =="Vendor Proposed Quantity") || (col.headerText =="CP"))
				{
					txt="Total";
				}
				return txt;
			}
			
			
			public function sumFunctionCorp(col:AdvancedDataGridColumn):String
			{
				var sum:Number = 0;
				if (prodCorpData != null)
				{
					for (var i:int = 0; i < prodCorpData.length; i++)
					{
						if (!isNaN(prodCorpData[i][col.dataField]))
						{
							sum += Number(prodCorpData[i][col.dataField]);
						}
					}
				}
				return  pesosFmt.format((Number(sum*100)/100));
			}
			
			public function sumFunctionNacCL(col:AdvancedDataGridColumn):String
			{
				var sum:Number = 0;
				if (prodNacCLData != null)
				{
					for (var i:int = 0; i < prodNacCLData.length; i++)
					{
						if (!isNaN(prodNacCLData[i][col.dataField]))
						{
							sum += Number(prodNacCLData[i][col.dataField]);
						}
					}
				}
				return  pesosFmt.format((Number(sum*100)/100));
			}
			
			public function sumFunctionNacCO(col:AdvancedDataGridColumn):String
			{
				var sum:Number = 0;
				if (prodNacCOData != null)
				{
					for (var i:int = 0; i < prodNacCOData.length; i++)
					{
						if (!isNaN(prodNacCOData[i][col.dataField]))
						{
							sum += Number(prodNacCOData[i][col.dataField]);
						}
					}
				}
				return  pesosFmt.format((Number(sum*100)/100));
			}
			
			public function sumFunctionNacPE(col:AdvancedDataGridColumn):String
			{
				var sum:Number = 0;
				if (prodNacPEData != null)
				{
					for (var i:int = 0; i < prodNacPEData.length; i++)
					{
						if (!isNaN(prodNacPEData[i][col.dataField]))
						{
							sum += Number(prodNacPEData[i][col.dataField]);
						}
					}
				}
				return  pesosFmt.format((Number(sum*100)/100));
			}
			
			
			public function sumFunctionNacAR(col:AdvancedDataGridColumn):String
			{
				var sum:Number = 0;
				if (prodNacARData != null)
				{
					for (var i:int = 0; i < prodNacARData.length; i++)
					{
						if (!isNaN(prodNacARData[i][col.dataField]))
						{
							sum += Number(prodNacARData[i][col.dataField]);
						}
					}
				}
				return  pesosFmt.format((Number(sum*100)/100));
			}			
			
			
			
 			//styleFunction="setColorStyle" (for ADG)
	         public function setColorSubQuantity(data:Object, col:AdvancedDataGridColumn):Object
	         {
	             if(data["quantity_vendor"] <= 0)
	                 return {color:0xFF0000};
	             else    
	 				return {color:0x0000FF};
	 
	             return null;
	         }   		
	
	
	         public function setColorPaisQuantity(data:Object, col:AdvancedDataGridColumn):Object
	         {
	             if(data["vendorQuantity"] <= 0)
	                 return {color:0xFF0000};
	             else    
	 				return {color:0x0000FF};
	 
	             return null;
	         } 	
	         
	         
			private function getProductosModificados():void
			{
				var newValor:Number = 0;
				var oriValor:Number = 0; 

				if ( (prodCorpData) && (prodCorpData.length>0))
				{
				
					//get productos corp updated
					for (var i:int = 0; i < prodCorpData.length; i++)
					{
						newValor = prodCorpData[i]["quantity_vendor"];
						oriValor = prodCorpData[i]["quantity_vendor_original"];
						
						if ( newValor != oriValor )
						{
							var objProd:Object = new Object();
							objProd.vin = prodCorpData[i]["vin"];
							objProd.quantity_vendor = prodCorpData[i]["quantity_vendor"];
//							objProd.sub_quantity = newValor;
//							objProd.id_problema = prodCorpData[i]["id"];
//							objProd.moq = prodCorpData[i]["moq"];
							
//							var paises:Array = new Array();
//							for (var q:int = 0; q < paisesArr.length; q++)
//							{
//								var prefix:String =  UtilString.toLowerCase(paisesArr[q]) + "_";
//								if (!isNaN(prodCorpData[i][prefix + "quantity"]))
//								{
//									var prod:Object = new Object();
//									prod.pais = UtilString.toUpperCase(prefix.substr(0,2));
//									prod.sku = prodCorpData[i][prefix + "sku"];
//									prod.cantidad = prodCorpData[i][prefix + "quantity"];
//									prod.precio = prodCorpData[i][prefix + "sub_price"];
//									
//									paises.push(prod);
//								}
//								
//							}
//							objProd.paises = paises;
							prodCorpUpdated.addItem(objProd);
	
				  		}
				  		
					}
				}
				
					//get prod individuales modificados
				
				
				//get productos CL
				if ( (prodNacCLData) && (prodNacCLData.length>0))
				{
					for (i=0; i < prodNacCLData.length; i++)
					{
						newValor = prodNacCLData[i]["vendorQuantity"];
						oriValor = prodNacCLData[i]["paisQuantity"];					
						if ( newValor != oriValor )
						{
							var objProd1:Object = new Object();
							objProd1.idPais = "CL";
							objProd1.sku = prodNacCLData[i]["sku"];
				    		objProd1.cantidad = newValor
				    		prodNacUpdated.addItem(objProd1);						
						}
					}
				}					
				
				//get productos CO
				if ( (prodNacCOData) && (prodNacCOData.length>0))
				{				
					for (i=0; i < prodNacCOData.length; i++)
					{
						newValor = prodNacCOData[i]["vendorQuantity"];
						oriValor = prodNacCOData[i]["paisQuantity"];					
						if ( newValor != oriValor )
						{
							var objProd2:Object = new Object();
							objProd2.idPais = "CO";
							objProd2.sku = prodNacCOData[i]["sku"];
				    		objProd2.cantidad = newValor
				    		prodNacUpdated.addItem(objProd2);						
						}
					}
				}				
			
				//get productos PE
				if ( (prodNacPEData) && (prodNacPEData.length>0))
				{				
					for (i=0; i < prodNacPEData.length; i++)
					{
						newValor = prodNacPEData[i]["vendorQuantity"];
						oriValor = prodNacPEData[i]["paisQuantity"];					
						if ( newValor != oriValor )
						{
							var objProd3:Object = new Object();
							objProd3.idPais = "PE";
							objProd3.sku = prodNacPEData[i]["sku"];
				    		objProd3.cantidad = newValor
				    		prodNacUpdated.addItem(objProd3);						
						}
					}
				}					
	
				//get productos AR
				if ( (prodNacARData) && (prodNacARData.length>0))
				{				
					for (i=0; i < prodNacARData.length; i++)
					{
						newValor = prodNacARData[i]["vendorQuantity"];
						oriValor = prodNacARData[i]["paisQuantity"];					
						if ( newValor != oriValor )
						{
							var objProd4:Object = new Object();
							objProd4.idPais = "AR";
							objProd4.sku = prodNacARData[i]["sku"];
				    		objProd4.cantidad = newValor
				    		prodNacUpdated.addItem(objProd4);						
						}
					}
				}
					
			
			}		         


			private function checkCondicionesPreEnvio():void 
			{
				var marcados:Boolean = true;
				var subidos:Boolean = false;
				var lista:String = "";
				
				if (usuarioRol == RolesUsuarios.PROVEEDOR)
				{
					
					//Proveedor: debe adjuntar todos los archivos antes de enviar
					checkUploadFiles();
				
				} 
				else
				{
					//Coordinador Int: debe marcar todas las opciones de Confirmar o Rechazar			
					if (paisesArr)
					{						
						//check selected
						for (var x:int=0;x<paisesArr.length;x++) 
						{
					    	var pref:String = paisesArr[x];
				    		if (pref == "CL"){
				    			if (!rbgrp_confirmCL.selectedValue){
				    				marcados = false;
				    				lista += XML(paisesNombres).pais.(@codIata == pref).@nombre  + "\n";
				    			} 
				    		} else if (pref == "CO"){
				    			if (!rbgrp_confirmCO.selectedValue){
				    				marcados = false;
				    				lista += XML(paisesNombres).pais.(@codIata == pref).@nombre + "\n";
				    			}
				    		} else if (pref == "PE"){
				    			if (!rbgrp_confirmPE.selectedValue){
				    				marcados = false;
				    				lista += XML(paisesNombres).pais.(@codIata == pref).@nombre + "\n"; 
				    			}
				    		} else if (pref == "AR"){
				    			if (!rbgrp_confirmAR.selectedValue){
				    				marcados = false;
				    				lista += XML(paisesNombres).pais.(@codIata == pref).@nombre + "\n"; 
				    			}
				    		} 
						}
						
						//send values checked
						for (var q:int=0;q<paisesArr.length;q++) 
						{
					    	var prefe:String = paisesArr[q];
					    	var objConf:Object = new Object();
			    			objConf.codigo = prefe;
				    		if (prefe == "CL"){
				    			if (rbgrp_confirmCL.selectedValue == EstadosBPM.ENVIO){
				    				objConf.confirmado = 1;
				    			} else {
				    				objConf.confirmado = 0;
				    			}
				    		} else if (prefe == "CO"){
				    			if (rbgrp_confirmCO.selectedValue == EstadosBPM.ENVIO){
				    				objConf.confirmado = 1;
				    			} else {
				    				objConf.confirmado = 0;
				    			}
				    		} else if (prefe == "PE"){
				    			if (rbgrp_confirmPE.selectedValue == EstadosBPM.ENVIO){
				    				objConf.confirmado = 1;
				    			} else {
				    				objConf.confirmado = 0;
				    			}
				    		} else if (prefe == "AR"){
				    			if (rbgrp_confirmAR.selectedValue == EstadosBPM.ENVIO){
				    				objConf.confirmado = 1;
				    			} else {
				    				objConf.confirmado = 0;
				    			}
				    		}
				    		
				    		paisesConfimarArray.push(objConf);
						}						
						
					}
					
					if (!marcados)
					{
						alert.warning("Falta indicar si Confirma ó Rechaza documento PI para : \n"  + lista);
					} 
					else
					{
						onClickBtnEnviar();
					
					}
				}	
				
				
				
			}


			private function checkUploadFiles():void
			{
				trace("____"+  this.name + " -->  checkUploadFiles.");
				
	         	//re-llamada a servicio 	       
				var paisesEvent:uploadPiEvent = new uploadPiEvent();
				paisesEvent.metodo = "paisesConDocumento";
				paisesEvent.idPedidoCorp = pedidoCorpId;
				paisesEvent.dispatch();
				
				cwPaisesUpload = ChangeWatcher.watch(ComprasModelLocator.getInstance(),'paisesDocData',getPaisesUploded);  
				
			}	         



			private function getPaisesUploded(e:Event):void
			{
				trace("____"+  this.name + " -->  getPaisesUploded.");	
				var total:Number = modelo.paisesDocData.length;
//				trace("total archivos subidos=" + total + "  paises participantes=" + paisesArr.length);
				
				cwPaisesUpload.unwatch();								
					
				if (total != paisesArr.length)
				{
					alert.warning("Para enviar la PIC es necesario adjuntar un documento a cada país.");
				} 
				else
				{
					onClickBtnEnviar();
				}
				
			}			



			public function onClickBtnEnviar():void
			{	
				
				var saveProformaEvt:grabarProformaInvoicePorPaisEvent = new grabarProformaInvoicePorPaisEvent();
				var version:Number = new Number(infoSfpVo.version);
				
				//obtener productos modificados
				getProductosModificados();
				
	 			saveProformaEvt.idPedidoCorp = pedidoCorpId;
				saveProformaEvt.idEmpresa = empresaId;
				saveProformaEvt.idProveedorCorp = infoSfpVo.proveedorId;
				saveProformaEvt.estado = EstadosBPM.ENVIO;
				saveProformaEvt.version = ((version - Math.floor(version))>0)? Math.ceil(version) + ".0":(version+1) + ".0";

				if (prodCorpUpdated.length > 0 ) 
				{
					saveProformaEvt.productosCorpArr = prodCorpUpdated;  //listado de prod. modificados
				}	

				if (paisesConfimarArray.length > 0 ) 
				{
					saveProformaEvt.confirmacionArr = paisesConfimarArray;  //listado de paises confirmados
				}					

				if (prodNacUpdated.length > 0 )
				{
					saveProformaEvt.productosNacArr = prodNacUpdated;  //listado de prod. modificados
				}	

				saveProformaEvt.dispatch();
				btnEnviar.enabled = false;
		      	btnGuardar.enabled = false;												

			}		
	      			
			public function onClickBtnGuardar():void
			{	
				
				var saveProformaEvt:grabarProformaInvoicePorPaisEvent = new grabarProformaInvoicePorPaisEvent();
				var newVersion:Number = Number(infoSfpVo.version);
				
				//obtener productos modificados
				getProductosModificados();
				
				newVersion += Number(0.1);
	 			saveProformaEvt.idPedidoCorp = pedidoCorpId;
				saveProformaEvt.idEmpresa = empresaId;
				saveProformaEvt.idProveedorCorp = infoSfpVo.proveedorId;
				saveProformaEvt.estado = EstadosBPM.GUARDA;
				saveProformaEvt.version = newVersion.toFixed(1);
				
				if (prodCorpUpdated.length > 0 ) 
				{
					saveProformaEvt.productosCorpArr = prodCorpUpdated;  //listado de prod. modificados
				}	
				
				if (prodNacUpdated.length > 0 )
				{
					saveProformaEvt.productosNacArr = prodNacUpdated;  //listado de prod. modificados
				}	

				saveProformaEvt.dispatch();
				btnGuardar.enabled = false;
		      	btnEnviar.enabled = false;

			}



		        private function generarReporte(formato:String):void 
		        {
		            
		            var url:String;
		            var sourceCorp:String =""; 
		            var sourceNac:String = "";
		            
		            if (dg_corp) {
		            	sourceCorp = DataGridExport.exportCSV(dg_corp, "Corporativos");
		            }
		            if (paisesNacArr) {
		            	
		            	for (var k:int=0;k<paisesNacArr.length;k++)
						{
				    		var prefijo:String = paisesNacArr[k];
							//trace("pais envio: " + prefijo);
							
				    		if (prefijo == "CL")
				    		{
				    			sourceNac  += DataGridExport.exportCSV(dg_cl, "CHILE") + "|";
				    		} else if (prefijo == "CO")
				    		{
				    			sourceNac  += DataGridExport.exportCSV(dg_co, "COLOMBIA") + "|";
				    		} else if (prefijo == "PE")
				    		{
				    			sourceNac  += DataGridExport.exportCSV(dg_pe, "PERU") + "|";
				    		} else if (prefijo == "AR")
				    		{
				    			sourceNac  += DataGridExport.exportCSV(dg_ar, "ARGENTINA") + "|";
				    		}
				    		
						}

		            		
		            }
		            
		            //remove last separator
		            if (sourceNac.charAt(sourceNac.length-1) == '|')
		            {
		            	sourceNac = sourceNac.substring(0, sourceNac.length-1);
		            }	
					
					//send data for report
					UploadPostHelper.uploadDataReport( 'ig11.txt', uploadDataURL, sourceCorp);
					UploadPostHelper.uploadDataReport( 'sub_ig11.txt', uploadDataURL, sourceNac);

					
				    //call report					
//					var variables:URLVariables = new URLVariables();
//					variables.pNumeroSFP = infoSfpVo.numeroSFP;
//					variables.pEstado = infoSfpVo.estado; 
//					variables.pFecha = infoSfpVo.fecha_formato;
//					variables.pProveedor = infoSfpVo.proveedorNombre + '  ( ' + infoSfpVo.proveedorId + ' )';
//					variables.pVersion = infoSfpVo.version;
//					variables.pIntMerchant = infoSfpVo.merchantNombre; 
//					variables.formato = formato;
//					variables.fileName ='ig11.txt';			            
					
		            var request:URLRequest = new URLRequest();
					request.url = reporteURL + "?formato="+ formato +
								"&fileName=ig11.txt"+
								"&pNumeroSFP="+ infoSfpVo.numeroSFP +
								"&pEstado="+ infoSfpVo.estado + 
								"&pFecha="+ infoSfpVo.fecha_formato +
								"&pProveedor="+ infoSfpVo.proveedorNombre + " ( " + infoSfpVo.proveedorId + " )" +
								"&pVersion="+ infoSfpVo.version +
								"&pIntMerchant="+ infoSfpVo.merchantNombre;
					request.method = URLRequestMethod.POST;
					//request.data = variables;
		            navigateToURL(request, '_blank');						
					
		        }	


